﻿#!/usr/bin/python
# -*- coding: utf-8 -*-
"""unit test"""

import unittest

from smallseg import SEG

class SmallSEGTest(unittest.TestCase):
    
    def setUp(self):
        self.seg = SEG()
    
    def _test_set(self):
#        keywords = ['abc', 'aef', 'fzf', '我们']
#        keywords = [x.rstrip() for x in file("main.dic", 'rb') if x.rstrip()]
#        self.seg = SEG()
#        self.seg.set(keywords)
##        print seg.d
#        self.seg.set2(keywords)
#        print seg.d2
        self.assertEqual(self.seg.d, self.seg.d2)
        
    def test_cut(self):
        cases = [
            ("这是一个伸手不见五指的黑夜。我叫孙悟空，我爱北京，我爱Python和C++。", 
             [u'这是', u'一个', u'伸手不见五指', u'黑夜', u'我叫', u'孙悟空', u'我爱', u'北京', 
              u'我爱', u'Python', u'C++']),
            ('工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作',
             [u'工信', u'信处', u'女干事', u'每月', u'经过', u'下属', u'科室', u'都要', u'亲口', 
              u'交代', u'24', u'交换机', u'技术性', u'器件', u'安装', u'工作']),
            ("“Microsoft”一词由“MICROcomputer（微型计算机）”和“SOFTware（软件）”两部分组成",
#             [u'Microsoft', u'一词', u'MICROcomputer', u'微型', u'计算机', u'SOFTware', u'软件', u'两部分', u'组成']),
             [u'Microsoft', u'一词', u'MICROcomputer', u'微型计算机', u'SOFTware', u'软件', u'两部分', u'组成']),
            ('我不喜欢日本和服。', 
             [u'不喜欢', u'日本', u'和服']),
            ('雷猴回归人间。', 
             [u'雷猴', u'回归', u'人间']),
            ('永和服装饰品有限公司。', 
             [u'和服', u'装饰品', u'有限公司']),
            ('我爱北京天安门', 
             [u'我爱', u'北京', u'天安门']),
            ('abc', [u'abc']),
            ('隐马尔可夫', 
             [u'马尔可夫']),
            ('雷猴是个好网站', 
             [u'雷猴', u'是个', u'好网站']),
            ('草泥马和欺实马是今年的流行词汇', 
             [u'草泥马', u'欺实', u'实马', u'马是', u'今年', u'流行', u'词汇']),
            ('中国科学院计算技术研究所', 
#             [u'中国', u'科学院', u'计算技术', u'研究所']),
             [u'中国科学院', u'计算技术', u'研究所']),
            ('罗密欧与朱丽叶', 
#             [u'罗密欧', u'朱丽叶']),
             [u'罗密欧与朱丽叶']),
            ('伊藤洋华堂总府店', 
             [u'伊藤', u'洋华堂', u'总府', u'府店']),
            ('我购买了道具和服装', 
             [u'购买了', u'道具', u'服装']),
            ('PS: 我觉得开源有一个好处，就是能够敦促自己不断改进，避免敞帚自珍', 
             [u'PS', u'觉得', u'开源', u'有一个', u'好处', u'就是', u'能够', 
              u'敦促', u'自己', u'不断改进', u'避免', u'敞帚', u'自珍']),
              
            ('PS:  我觉得开源有   一个好处，就是\'能够敦促自己不断改进，菲菲锋锋是中华人民共和国公民避免敞帚自珍MK', 
             [u'PS', u'觉得', u'开源', u'一个', u'好处', u'就是', u'能够', 
              u'敦促', u'自己', u'不断改进', u'菲菲锋锋', u'中华人民共和国', u'公民', u'避免', u'敞帚', u'自珍', u'MK']),
            ]
        
        for i, (text, want) in enumerate(cases):
            wlist = self.seg.cut(text)
            wlist.reverse()
#            for i, w in enumerate(wlist):
#                print w,
#            print
#            print i
#            print want
#            print wlist
            self.assertEqual(want, wlist)
#        s = self.seg.cut('s8缩吧缩短网址--快速安全的网址缩短服务&nbsp;&nbsp;|网址缩短|缩短地址|缩吧|短址|短网址|安全链接|精简网址|网址转发|页面转跳')
#        for i in s:
#            print i,
            
    def test_html(self):
        import httplib2
        h = httplib2.Http('c:/http_cache')
#        response, content = h.request('http://fengmk2.cnblogs.com')
#        response, content = h.request('http://qleelulu.cnblogs.com')
#        response, content = h.request('http://www.pc120.com')
        response, content = h.request('http://url.pc120.com/trojan/monitorurl/')
        
        print response
        import re
        words = self.seg.cut(content, True)
        count_words = {}
        for w in words:
            count_words[w] = count_words.get(w, 0) + 1
        for i, (w, count) in enumerate(sorted(count_words.iteritems(), key=lambda x: x[1], reverse=True)):
            print u'%s[%d]' % (w, count),
            if i % 10 == 0:
                print


if __name__ == '__main__':
    unittest.main()